/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云jcq接口
jcq相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef JcqClient_h
#define JcqClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKJcq/JcqApiModel.h>

@interface JcqClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    listDeadLetters sync request
    @param listDeadLettersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listDeadLettersResponse` the request response data model
    */
    -(NSDictionary*) listDeadLettersSyncWithRequest:(JcqListDeadLettersRequest*) listDeadLettersRequest;

    -(void)listDeadLettersAsyncWithRequest:(JcqListDeadLettersRequest*) listDeadLettersRequest
    completionHandler:(void(^)(int statusCode,JcqListDeadLettersResponse* _Nullable listDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDeadLetterNumbers sync request
    @param describeDeadLetterNumbersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDeadLetterNumbersResponse` the request response data model
    */
    -(NSDictionary*) describeDeadLetterNumbersSyncWithRequest:(JcqDescribeDeadLetterNumbersRequest*) describeDeadLetterNumbersRequest;

    -(void)describeDeadLetterNumbersAsyncWithRequest:(JcqDescribeDeadLetterNumbersRequest*) describeDeadLetterNumbersRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeDeadLetterNumbersResponse* _Nullable describeDeadLetterNumbersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    cleanMessages sync request
    @param cleanMessagesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `cleanMessagesResponse` the request response data model
    */
    -(NSDictionary*) cleanMessagesSyncWithRequest:(JcqCleanMessagesRequest*) cleanMessagesRequest;

    -(void)cleanMessagesAsyncWithRequest:(JcqCleanMessagesRequest*) cleanMessagesRequest
    completionHandler:(void(^)(int statusCode,JcqCleanMessagesResponse* _Nullable cleanMessagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteTopic sync request
    @param deleteTopicRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteTopicResponse` the request response data model
    */
    -(NSDictionary*) deleteTopicSyncWithRequest:(JcqDeleteTopicRequest*) deleteTopicRequest;

    -(void)deleteTopicAsyncWithRequest:(JcqDeleteTopicRequest*) deleteTopicRequest
    completionHandler:(void(^)(int statusCode,JcqDeleteTopicResponse* _Nullable deleteTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    resendDeadLetters sync request
    @param resendDeadLettersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resendDeadLettersResponse` the request response data model
    */
    -(NSDictionary*) resendDeadLettersSyncWithRequest:(JcqResendDeadLettersRequest*) resendDeadLettersRequest;

    -(void)resendDeadLettersAsyncWithRequest:(JcqResendDeadLettersRequest*) resendDeadLettersRequest
    completionHandler:(void(^)(int statusCode,JcqResendDeadLettersResponse* _Nullable resendDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAccessPoint sync request
    @param describeAccessPointRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAccessPointResponse` the request response data model
    */
    -(NSDictionary*) describeAccessPointSyncWithRequest:(JcqDescribeAccessPointRequest*) describeAccessPointRequest;

    -(void)describeAccessPointAsyncWithRequest:(JcqDescribeAccessPointRequest*) describeAccessPointRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeAccessPointResponse* _Nullable describeAccessPointResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeTopics sync request
    @param describeTopicsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeTopicsResponse` the request response data model
    */
    -(NSDictionary*) describeTopicsSyncWithRequest:(JcqDescribeTopicsRequest*) describeTopicsRequest;

    -(void)describeTopicsAsyncWithRequest:(JcqDescribeTopicsRequest*) describeTopicsRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeTopicsResponse* _Nullable describeTopicsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    removePermission sync request
    @param removePermissionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `removePermissionResponse` the request response data model
    */
    -(NSDictionary*) removePermissionSyncWithRequest:(JcqRemovePermissionRequest*) removePermissionRequest;

    -(void)removePermissionAsyncWithRequest:(JcqRemovePermissionRequest*) removePermissionRequest
    completionHandler:(void(^)(int statusCode,JcqRemovePermissionResponse* _Nullable removePermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    resetConsumeOffset sync request
    @param resetConsumeOffsetRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resetConsumeOffsetResponse` the request response data model
    */
    -(NSDictionary*) resetConsumeOffsetSyncWithRequest:(JcqResetConsumeOffsetRequest*) resetConsumeOffsetRequest;

    -(void)resetConsumeOffsetAsyncWithRequest:(JcqResetConsumeOffsetRequest*) resetConsumeOffsetRequest
    completionHandler:(void(^)(int statusCode,JcqResetConsumeOffsetResponse* _Nullable resetConsumeOffsetResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteDeadLetters sync request
    @param deleteDeadLettersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteDeadLettersResponse` the request response data model
    */
    -(NSDictionary*) deleteDeadLettersSyncWithRequest:(JcqDeleteDeadLettersRequest*) deleteDeadLettersRequest;

    -(void)deleteDeadLettersAsyncWithRequest:(JcqDeleteDeadLettersRequest*) deleteDeadLettersRequest
    completionHandler:(void(^)(int statusCode,JcqDeleteDeadLettersResponse* _Nullable deleteDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createTopic sync request
    @param createTopicRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createTopicResponse` the request response data model
    */
    -(NSDictionary*) createTopicSyncWithRequest:(JcqCreateTopicRequest*) createTopicRequest;

    -(void)createTopicAsyncWithRequest:(JcqCreateTopicRequest*) createTopicRequest
    completionHandler:(void(^)(int statusCode,JcqCreateTopicResponse* _Nullable createTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createSubscription sync request
    @param createSubscriptionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createSubscriptionResponse` the request response data model
    */
    -(NSDictionary*) createSubscriptionSyncWithRequest:(JcqCreateSubscriptionRequest*) createSubscriptionRequest;

    -(void)createSubscriptionAsyncWithRequest:(JcqCreateSubscriptionRequest*) createSubscriptionRequest
    completionHandler:(void(^)(int statusCode,JcqCreateSubscriptionResponse* _Nullable createSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMessageTrace sync request
    @param describeMessageTraceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessageTraceResponse` the request response data model
    */
    -(NSDictionary*) describeMessageTraceSyncWithRequest:(JcqDescribeMessageTraceRequest*) describeMessageTraceRequest;

    -(void)describeMessageTraceAsyncWithRequest:(JcqDescribeMessageTraceRequest*) describeMessageTraceRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeMessageTraceResponse* _Nullable describeMessageTraceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeConsumerGroupIds sync request
    @param describeConsumerGroupIdsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeConsumerGroupIdsResponse` the request response data model
    */
    -(NSDictionary*) describeConsumerGroupIdsSyncWithRequest:(JcqDescribeConsumerGroupIdsRequest*) describeConsumerGroupIdsRequest;

    -(void)describeConsumerGroupIdsAsyncWithRequest:(JcqDescribeConsumerGroupIdsRequest*) describeConsumerGroupIdsRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeConsumerGroupIdsResponse* _Nullable describeConsumerGroupIdsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifySubscriptionAttribute sync request
    @param modifySubscriptionAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifySubscriptionAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifySubscriptionAttributeSyncWithRequest:(JcqModifySubscriptionAttributeRequest*) modifySubscriptionAttributeRequest;

    -(void)modifySubscriptionAttributeAsyncWithRequest:(JcqModifySubscriptionAttributeRequest*) modifySubscriptionAttributeRequest
    completionHandler:(void(^)(int statusCode,JcqModifySubscriptionAttributeResponse* _Nullable modifySubscriptionAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSubscription sync request
    @param describeSubscriptionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubscriptionResponse` the request response data model
    */
    -(NSDictionary*) describeSubscriptionSyncWithRequest:(JcqDescribeSubscriptionRequest*) describeSubscriptionRequest;

    -(void)describeSubscriptionAsyncWithRequest:(JcqDescribeSubscriptionRequest*) describeSubscriptionRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeSubscriptionResponse* _Nullable describeSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addPermission sync request
    @param addPermissionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addPermissionResponse` the request response data model
    */
    -(NSDictionary*) addPermissionSyncWithRequest:(JcqAddPermissionRequest*) addPermissionRequest;

    -(void)addPermissionAsyncWithRequest:(JcqAddPermissionRequest*) addPermissionRequest
    completionHandler:(void(^)(int statusCode,JcqAddPermissionResponse* _Nullable addPermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeTopic sync request
    @param describeTopicRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeTopicResponse` the request response data model
    */
    -(NSDictionary*) describeTopicSyncWithRequest:(JcqDescribeTopicRequest*) describeTopicRequest;

    -(void)describeTopicAsyncWithRequest:(JcqDescribeTopicRequest*) describeTopicRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeTopicResponse* _Nullable describeTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMessages sync request
    @param describeMessagesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessagesResponse` the request response data model
    */
    -(NSDictionary*) describeMessagesSyncWithRequest:(JcqDescribeMessagesRequest*) describeMessagesRequest;

    -(void)describeMessagesAsyncWithRequest:(JcqDescribeMessagesRequest*) describeMessagesRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeMessagesResponse* _Nullable describeMessagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSubscriptions sync request
    @param describeSubscriptionsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubscriptionsResponse` the request response data model
    */
    -(NSDictionary*) describeSubscriptionsSyncWithRequest:(JcqDescribeSubscriptionsRequest*) describeSubscriptionsRequest;

    -(void)describeSubscriptionsAsyncWithRequest:(JcqDescribeSubscriptionsRequest*) describeSubscriptionsRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeSubscriptionsResponse* _Nullable describeSubscriptionsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMessage sync request
    @param describeMessageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessageResponse` the request response data model
    */
    -(NSDictionary*) describeMessageSyncWithRequest:(JcqDescribeMessageRequest*) describeMessageRequest;

    -(void)describeMessageAsyncWithRequest:(JcqDescribeMessageRequest*) describeMessageRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeMessageResponse* _Nullable describeMessageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMessagesByBusinessId sync request
    @param describeMessagesByBusinessIdRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessagesByBusinessIdResponse` the request response data model
    */
    -(NSDictionary*) describeMessagesByBusinessIdSyncWithRequest:(JcqDescribeMessagesByBusinessIdRequest*) describeMessagesByBusinessIdRequest;

    -(void)describeMessagesByBusinessIdAsyncWithRequest:(JcqDescribeMessagesByBusinessIdRequest*) describeMessagesByBusinessIdRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeMessagesByBusinessIdResponse* _Nullable describeMessagesByBusinessIdResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describePermission sync request
    @param describePermissionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePermissionResponse` the request response data model
    */
    -(NSDictionary*) describePermissionSyncWithRequest:(JcqDescribePermissionRequest*) describePermissionRequest;

    -(void)describePermissionAsyncWithRequest:(JcqDescribePermissionRequest*) describePermissionRequest
    completionHandler:(void(^)(int statusCode,JcqDescribePermissionResponse* _Nullable describePermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDeadLetterNumbersWithTopic sync request
    @param describeDeadLetterNumbersWithTopicRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDeadLetterNumbersWithTopicResponse` the request response data model
    */
    -(NSDictionary*) describeDeadLetterNumbersWithTopicSyncWithRequest:(JcqDescribeDeadLetterNumbersWithTopicRequest*) describeDeadLetterNumbersWithTopicRequest;

    -(void)describeDeadLetterNumbersWithTopicAsyncWithRequest:(JcqDescribeDeadLetterNumbersWithTopicRequest*) describeDeadLetterNumbersWithTopicRequest
    completionHandler:(void(^)(int statusCode,JcqDescribeDeadLetterNumbersWithTopicResponse* _Nullable describeDeadLetterNumbersWithTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteSubscription sync request
    @param deleteSubscriptionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSubscriptionResponse` the request response data model
    */
    -(NSDictionary*) deleteSubscriptionSyncWithRequest:(JcqDeleteSubscriptionRequest*) deleteSubscriptionRequest;

    -(void)deleteSubscriptionAsyncWithRequest:(JcqDeleteSubscriptionRequest*) deleteSubscriptionRequest
    completionHandler:(void(^)(int statusCode,JcqDeleteSubscriptionResponse* _Nullable deleteSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    jcq common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) jcqCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)jcqCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* JcqClient_h */
